home *** CD-ROM | disk | FTP | other *** search
- #include <exec/types.h>
- #include <stdio.h>
- #include <stdlib.h>
-
-
- char PathName[200];
- int Dir;
- void rmslash(char *str);
- void sr(char *str);
- void WriteToT(char *str);
- int TLock(char *str);
- void ReMoveDesc(char *Path,int Dir);
- FILE *fi;
- main(int argc,char *argv[])
- {
- register int i;
- if(argc!=3)
- {
- printf("DirPurge version 1.1 written by Joseph Hodge\n");
- printf("Usage: DirPurge <confpath> <DirNum>\n");
- printf(" ie: DirPurge bbs:elite 3\n");
- printf("\n");
- printf("This is an AmiExpress 1.1w+ utility\n");
- printf("OutPut goes to Dir(x), Dir(x).old, Dir(x).removed\n");
- exit(0);
- }
-
- strcpy(PathName,argv[1]);
- Dir=atoi(argv[2]);
- sr(PathName);
-
- rmslash(PathName);
-
- if(!TLock(PathName))
- {
- printf("Error, Can't locate conference %s\n",PathName);
- exit(0);
- }
- ReMoveDesc(PathName,Dir);
- }
-
- void ReMoveDesc(char *Path,int Dir)
- {
- FILE *fi,*fo1,*fo2,*fi2;
- char image[256];
- char D1[200];
- char D2[200];
- char P[200];
- char FName[200];
- char Pimage[200];
- char Paths[200];
- char D[200];
- BOOL Remove=FALSE;
- BOOL Header=TRUE;
- char temp[256];
- strcpy(P,Path);
-
- if(P[strlen(P)-1]!='/' && P[strlen(P)-1]!=':')
- {
- strcat(P,"/");
- }
- sprintf(image,"%sdir%d",P,Dir);
- sprintf(D,"%sdir%d.old",P,Dir);
- if(TLock(D))
- DeleteFile(D);
-
- Rename(image,D);
- sprintf(Paths,"%sPaths",P);
- sprintf(D1,"%sdir%d",P,Dir);
- sprintf(D2,"%sdir%d.removed",P,Dir);
- if(!TLock(Paths))
- {
- printf("Error, can't locate Paths file\n");
- exit(0);
- }
-
- fi=fopen(D,"r");
- if(fi==NULL)
- {
- printf("Error!!!! could not open Dir file\n\n");
- exit(0);
- }
- fi2=fopen(Paths,"r");
- if(fi2==NULL)
- {
- fclose(fi);
- printf("Error, can't open paths file\n");
- exit(0);
- }
- fo1=fopen(D1,"a");
- if(fo1==NULL)
- {
- printf("Error, can't create dir(x).new\n");
- fclose(fi);
- fclose(fi2);
- exit(0);
- }
- fo2=fopen(D2,"a");
- if(fo2==NULL)
- {
- printf("Error, can't create dir(x).removed\n");
- fclose(fi);
- fclose(fi2);
- fclose(fo1);
- exit(0);
- }
- while(fgets(image,200,fi)!=NULL)
- {
- rewind(fi2);
- sr(image);
- if(image[0]>32)
- {
- if(Header==TRUE)
- {
- if(image[25]=='-' && image[28]=='-' && image[27]!='-')
- {
- Header=FALSE;
- }
- else
- {
- fprintf(fo1,"%s\n",image); continue;
- }
- }
- Remove=TRUE;
- strcpy(temp,image);
- temp[13]='\0'; sr(temp);
- printf("Searching %-13.13s ",temp);
- while(fgets(Pimage,80,fi2)!=NULL)
- {
- sr(Pimage);
- sprintf(FName,"%s%s",Pimage,temp);
- if(TLock(FName))
- {
- Remove=FALSE; printf("FOUND\n");
- fprintf(fo1,"%s\n",image);
- break;
- }
- }
- if(!Remove) continue;
- printf("*** CANT LOCATE ***\n");
- fprintf(fo2,"%s\n",image);
- }
- else if(image[0]!='\0')
- {
- if(Remove)
- fprintf(fo2,"%s\n",image);
- else fprintf(fo1,"%s\n",image);
- }
- }
- fclose(fi);
- fclose(fi2);
- fclose(fo1);
- fclose(fo2);
-
- }
-
- void sr(char *str)
- {
- register int i;
- i=strlen(str)-1;
- while(i>-1)
- {
- if(*(str+i)<=32) *(str+i)='\0'; else break;
- i--;
- }
- }
-
- void rmslash(char *str)
- {
- register int i;
- i=strlen(str)-1;
- while(i>-1)
- {
- if(*(str+i)=='/' || *(str+i)<=32) *(str+i)='\0'; else break;
- i--;
- }
- }
- #define ACCESS_READ -2
- int TLock(char *str)
- {
- long lock;
- if(lock=Lock(str,ACCESS_READ))
- {
- UnLock(lock); return(1);
- }
- return(0);
- }